package hyy_2022;

/**
 * 数组nums,将所有0移动到数组的末尾, 同时保持非0元素的相对顺序
 */
public class _0802_283_MoveZeroes {


    /**
     * 胡瑶瑶思路走一波:
     * 1、保证nums != null
     * 2、遍历数组,当数组元素不为0 且 数组元素有前一个元素 且 数组前一个元素为0 ,往前移动
     *    直至移动到数组前一个元素不为0,停止移动
     *    往前移动,则是相邻两个数组元素交换位置
     * 3、直至数组遍历完,数组移动结束
     * @param nums
     */
    public static void moveZeros(int[] nums) {
        if(nums != null) {
            for(int i = 0;i<nums.length;i++) {
                if(nums[i] != 0) {
                    int j = i;
                    while(j-1>=0 && nums[j-1] == 0) {
                        int temp = nums[j-1];
                        nums[j-1] = nums[j];
                        nums[j] = temp;
                        j = j - 1;

                    }
                }
            }
        }
    }
}
